<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>
    // 利用闭包的写法实现的单例模式
    // const createObj = (function (){
    //     const obj = {};
    //     return function (name,age,sex){
    //         obj.name = name;
    //         obj.age = age;
    //         obj.sex = sex;
    //         return obj;
    //     }
    // })();

    // const obj1 = createObj("张三", 19, "男")
    // console.log(obj1)
    
    // const obj2 = createObj("李四", 23, "女")
    // console.log(obj2)

    // console.log(obj1 === obj2);


    // 不能产生新的全局数据
    // 利用现有的全局数据：函数自身

    function createObj(name,age,sex){
        // 先判断当前函数身上是否具有自定义对象属性
        if(!createObj._qf_obj_){
            // 没有，创建
            createObj._qf_obj_ = {};
        }
        // 有，不创建，起别名
        const o = createObj._qf_obj_;
        // 操作
        o.name = {};
        o.age = age;
        o.sex = sex;
        // 返回
        return o;
    }


    const obj1 = new createObj("张三", 19, "男")
    console.log(obj1)
    
    const obj2 = new createObj("李四", 23, "女")
    console.log(obj2)

    console.log(obj1 === obj2);

    
</script>
</html>